using System;
using System.Collections.Generic;
using System.Text;
using System.Data;           //CommandType
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Etna.Exportaciones.En;

namespace Etna.Exportaciones.Ad
{
   public class AdStockProductoAlmacen
   {
      //public AdStockProductoAlmacen(SqlConnection con)
      //{
      //   conexion = con;
      //}

       public EnStockProductoAlmacen Leer(int pidStock, SqlConnection conexion)
      {
         EnStockProductoAlmacen oEnStockProductoAlmacen = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_StockProductoAlmacenLeer", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidStock", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidStock;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {

            if (drd.Read())
            {
               oEnStockProductoAlmacen = new EnStockProductoAlmacen();
               oEnStockProductoAlmacen.idStock = drd.GetInt32(0);
               if (!drd.IsDBNull(1))
               {
                  oEnStockProductoAlmacen.idProducto = drd.GetInt32(1);
               }
               if (!drd.IsDBNull(2))
               {
                  oEnStockProductoAlmacen.idAlmacen = drd.GetInt32(2);
               }
               if (!drd.IsDBNull(3))
               {
                  oEnStockProductoAlmacen.inumeroLote = drd.GetInt32(3);
               }
               if (!drd.IsDBNull(4))
               {
                  oEnStockProductoAlmacen.icantidad = drd.GetInt32(4);
               }
               if (!drd.IsDBNull(5))
               {
                  oEnStockProductoAlmacen.icantidadReservada = drd.GetInt32(5);
               }
               if (!drd.IsDBNull(6))
               {
                  oEnStockProductoAlmacen.sestado = drd.GetString(6);
               }
            }
            drd.Close();
         }

         return oEnStockProductoAlmacen;
      }

       public bool Insertar(EnStockProductoAlmacen poEnStockProductoAlmacen, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_StockProductoAlmacenInsertar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidProducto", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnStockProductoAlmacen.idProducto;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidAlmacen", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnStockProductoAlmacen.idAlmacen;

         SqlParameter Parametro3 = cmd.Parameters.Add("@pinumeroLote", SqlDbType.Int);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnStockProductoAlmacen.inumeroLote;

         SqlParameter Parametro4 = cmd.Parameters.Add("@picantidad", SqlDbType.Int);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnStockProductoAlmacen.icantidad;

         SqlParameter Parametro5 = cmd.Parameters.Add("@picantidadReservada", SqlDbType.Int);
         Parametro5.Direction = ParameterDirection.Input;
         Parametro5.Value = poEnStockProductoAlmacen.icantidadReservada;

         SqlParameter Parametro6 = cmd.Parameters.Add("@piestado", SqlDbType.VarChar);
         Parametro6.Direction = ParameterDirection.Input;
         Parametro6.Value = poEnStockProductoAlmacen.sestado;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }


       public bool Modificar(EnStockProductoAlmacen poEnStockProductoAlmacen, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_StockProductoAlmacenModificar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidStock", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnStockProductoAlmacen.idStock;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidProducto", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnStockProductoAlmacen.idProducto;

         SqlParameter Parametro3 = cmd.Parameters.Add("@piidAlmacen", SqlDbType.Int);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnStockProductoAlmacen.idAlmacen;

         SqlParameter Parametro4 = cmd.Parameters.Add("@pinumeroLote", SqlDbType.Int);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnStockProductoAlmacen.inumeroLote;

         SqlParameter Parametro5 = cmd.Parameters.Add("@picantidad", SqlDbType.Int);
         Parametro5.Direction = ParameterDirection.Input;
         Parametro5.Value = poEnStockProductoAlmacen.icantidad;

         SqlParameter Parametro6 = cmd.Parameters.Add("@picantidadReservada", SqlDbType.Int);
         Parametro6.Direction = ParameterDirection.Input;
         Parametro6.Value = poEnStockProductoAlmacen.icantidadReservada;

         SqlParameter Parametro7 = cmd.Parameters.Add("@piestado", SqlDbType.VarChar);
         Parametro7.Direction = ParameterDirection.Input;
         Parametro7.Value = poEnStockProductoAlmacen.sestado;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }

       public List<EnStockProductoAlmacen> Listar(int pidStock, SqlConnection conexion)
      {
         List<EnStockProductoAlmacen> loEnStockProductoAlmacen = null;
         EnStockProductoAlmacen oEnStockProductoAlmacen = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_StockProductoAlmacenListar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidStock", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidStock;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {

            loEnStockProductoAlmacen = new List<EnStockProductoAlmacen>();
            while (drd.Read())
            {
               oEnStockProductoAlmacen = new EnStockProductoAlmacen();
               oEnStockProductoAlmacen.idStock = drd.GetInt32(0);
               if (!drd.IsDBNull(1))
               {
                  oEnStockProductoAlmacen.idProducto = drd.GetInt32(1);
               }
               if (!drd.IsDBNull(2))
               {
                  oEnStockProductoAlmacen.idAlmacen = drd.GetInt32(2);
               }
               if (!drd.IsDBNull(3))
               {
                  oEnStockProductoAlmacen.inumeroLote = drd.GetInt32(3);
               }
               if (!drd.IsDBNull(4))
               {
                  oEnStockProductoAlmacen.icantidad = drd.GetInt32(4);
               }
               if (!drd.IsDBNull(5))
               {
                  oEnStockProductoAlmacen.icantidadReservada = drd.GetInt32(5);
               }
               if (!drd.IsDBNull(6))
               {
                  oEnStockProductoAlmacen.sestado = drd.GetString(6);
               }
               loEnStockProductoAlmacen.Add(oEnStockProductoAlmacen);
            }
            drd.Close();
         }

         return loEnStockProductoAlmacen;
      }
   }
}
